ceph三种存储(块存储,文件存储,对象存储)创建方法 |
您所在的位置:网站首页 › 块存储 对象存储 › ceph三种存储(块存储,文件存储,对象存储)创建方法 |
非常详细的 Ceph 介绍以及创建方法
转载于 https://zhuanlan.zhihu.com/p/269474049 1. Ceph架构简介及使用场景介绍 1.1 Ceph简介Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。 Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。 1.2 Ceph特点高性能 a. 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高。 b.考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。 c. 能够支持上千个存储节点的规模,支持TB到PB级的数据。 高可用性 a. 副本数可以灵活控制。 b. 支持故障域分隔,数据强一致性。 c. 多种故障场景自动进行修复自愈。 d. 没有单点故障,自动管理。 高可扩展性 a. 去中心化。 b. 扩展灵活。 c. 随着节点增加而线性增长。 特性丰富 a. 支持三种存储接口:块存储、文件存储、对象存储。 b. 支持自定义接口,支持多种语言驱动。 1.3 Ceph架构支持三种接口: Object:有原生的API,而且也兼容Swift和S3的API。 Block:支持精简配置、快照、克隆。 File:Posix接口,支持快照。 ![]() Monitor 一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。 OSD OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。 MDS MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。 Object Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。 PG PG全称Placement Grouops,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。 RADOS RADOS全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。 Libradio Librados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。 CRUSH CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。 RBD RBD全称RADOS block device,是Ceph对外提供的块设备服务。 RGW RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。 CephFS CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。 1.5 三种存储类型-块存储![]() 典型设备:磁盘阵列,硬盘 主要是将裸磁盘空间映射给主机使用的。 优点: 通过Raid与LVM等手段,对数据提供了保护。 多块廉价的硬盘组合起来,提高容量。 多块磁盘组合出来的逻辑盘,提升读写效率。 缺点: 采用SAN架构组网时,光纤交换机,造价成本高。 主机之间无法共享数据。 使用场景: docker容器、虚拟机磁盘存储分配。 日志存储。 文件存储。 … 1.6 三种存储类型-文件存储![]() 典型设备:FTP、NFS服务器 为了克服块存储文件无法共享的问题,所以有了文件存储。 在服务器上架设FTP与NFS服务,就是文件存储。 优点: 造价低,随便一台机器就可以了。 方便文件共享。 缺点: 读写速率低。 传输速率慢。 使用场景: 日志存储。 有目录结构的文件存储。 … 1.7 三种存储类型-对象存储![]() 典型设备:内置大容量硬盘的分布式服务器(swift, s3) 多台服务器内置大容量硬盘,安装上对象存储管理软件,对外提供读写访问功能。 优点: 具备块存储的读写高速。 具备文件存储的共享等特性。 使用场景:(适合更新变动较少的数据) 图片存储。 视频存储。 … 2. 三种存储的创建方法 块存储1.建立存储池,并初始化(注意:在客户端操作) ceph osd pool create rbd_pool 128 rbd pool init rbd_pool 2、创建一个存储卷(client操作) 卷名为volume1,大小为5000M rbd create volume1 --pool rbd_pool --size 5000 rbd ls rbd_pool #查看卷列表 rbd info volume1 -p rbd_pool #查看卷信息 3、创建Ceph块存储 将创建的卷映射成块设备 rbd map rbd_pool/volume1 因为rbd镜像的一些特性,OS kernel并不支持,所以映射报错 rbd feature disable rbd_pool/volume1 object-map fast-diff deep-flatten 再次映射 rbd map rbd_pool/volume1 4、使用Ceph块存储 查看映射 rbd showmapped 格式化,挂载 mkfs.xfs /dev/rbd0 mount /dev/rbd1 /mnt/ 5、块存储扩容 在线扩容,扩容成8000M rbd resize --size 8000 rbd_pool/volume1 rbd info rbd_pool/volume1 | grep size 挂载格式扩容 xfs_growfs -d /dev/rbd0 6、删除块存储 umount /mnt/ rbd unmap /dev/rbd0 ceph osd pool delete rbd_pool rbd_pool --yes-i-really-really-mean-it 文件存储1、配置pool格式 在node1部署节点上同步配置文件,并创建mds服务(也可以做多个mds实现HA) ceph-deploy mds create node1 node2 node3 一个Ceph文件系统需要至少两个RADOS存储池,一个用于数据,一个用于元数据。(client执行) ceph osd pool create cephfs_pool 128 ceph osd pool create cephfs_metadata 64 2、创建Ceph文件系统 创建Ceph文件系统,并确认客户端访问的节点 ceph fs new cephfs cephfs_metadata cephfs_pool ceph fs ls ceph mds stat 3、客户端准备验证key文件 ceph默认启用了cephx认证, 所以客户端的挂载必须要验证在集群节点(node1,node2,node3)上任意一台查看密钥字符串 cat /etc/ceph/ceph.client.admin.keyring #node1 在客户端client上创建一个文件记录密钥字符串 vim admin.key 创建一个密钥文件,复制粘贴上面红色标出的字符串 Chmod 600 admin.key 4、客户端挂载(client执行) 挂载ceph集群中运行mon监控的节点, mon监控为6789端口 yum -y install ceph-fuse ceph mount -t ceph node1:6789:/ /mnt -o name=admin,secretfile=/root/admin.key 5、删除文件存储(client执行) 在客户端上删除数据,并umount所有挂载 rm -rf /mnt/* umount /mnt/ 停掉所有node节点的mds(只有停掉mds才能删除文件存储,之后启动) systemctl stop ceph-mds.target 回到集群任意一个节点上(client执行)删除 ceph fs rm cephfs --yes-i-really-mean-it ceph osd pool delete cephfs_metadata cephfs_metadata --yes-i-really-really-mean-it ceph osd pool delete cephfs_pool cephfs_pool --yes-i-really-really-mean-it 对象存储1、测试ceph对象网关的连接 在node1上创建rgw apt install ceph-radosgw(找不到包就去阿里云镜像站下载) ceph orch apply rgw create ceph01 客户端创建一个测试用户(access_key与secret_key,用于连接对象存储网关) radosgw-admin user create --uid="testuser" --display -name="First User" 2、S3连接ceph对象网关 AmazonS3是一种面向Internet的对象存储服务.我们这里可以使用s3工具连接ceph的对象存储进行操作 客户端安装s3cmd工具,并编写ceph连接配置文件 yum install s3cmd -y 创建并编写下面的文件 vim /root/.s3cfg [default] access_key = E9GTLFFZ6D19G3VN9652 secret_key = djvdvqFzawGBW0qt2c3RfVz4X86GB2f2VwnML1EC host_base = 192.168.44.12:7480 host_bucket = 192.168.44.12:7480/%(bucket) cloudfront_host = 192.168.44.12:7480 use_https = False 3、命令测试 列出bucket,可以查看到先前测试创建的my-new-bucket s3cmd mb s3://test_bucket #创建一个test_bucket s3cmd ls #查看已经有的连接 上传文件 s3cmd put /etc/fstab s3://test_bucket/aaa 下载文件 s3cmd get s3://test_bucket/aaa |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |